﻿using System;
using CoreGraphics;
using Foundation;
using ObjCRuntime;
using UIKit;
using CoreLocation;
using MediaPlayer;

namespace UmengSocial
{
	
    // @interface UMSocialUrlResource : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialUrlResource
    {
        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }

        // @property (assign, nonatomic) UMSocialUrlResourceType resourceType;
        [Export("resourceType", ArgumentSemantic.Assign)]
        UMSocialUrlResourceType ResourceType { get; set; }

        // -(void)setResourceType:(UMSocialUrlResourceType)resourceType url:(NSString *)url;
        [Export("setResourceType:url:")]
        void SetResourceType(UMSocialUrlResourceType resourceType, string url);

        // -(id)initWithSnsResourceType:(UMSocialUrlResourceType)resourceType url:(NSString *)url;
        [Export("initWithSnsResourceType:url:")]
        IntPtr Constructor(UMSocialUrlResourceType resourceType, string url);
    }

    // @interface UMSocialSnsData : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialSnsData
    {
        // @property (copy, nonatomic) NSString * snsName;
        [Export("snsName")]
        string SnsName { get; set; }

        // @property (copy, nonatomic) NSString * shareText;
        [Export("shareText")]
        string ShareText { get; set; }

        // @property (retain, nonatomic) id shareImage;
        [Export("shareImage", ArgumentSemantic.Retain)]
        NSObject ShareImage { get; set; }

        // @property (retain, nonatomic) UMSocialUrlResource * urlResource;
        [Export("urlResource", ArgumentSemantic.Retain)]
        UMSocialUrlResource UrlResource { get; set; }
    }

    // @interface UMSocialSinaData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialSinaData
    {
    }

    // @interface UMSocialTencentData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialTencentData
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (copy, nonatomic) NSString * author;
        [Export("author")]
        string Author { get; set; }
    }

    // @interface UMSocialQzoneData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialQzoneData
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialQQData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialQQData
    {
        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }

        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (assign, nonatomic) UMSocialQQMessageType qqMessageType;
        [Export("qqMessageType", ArgumentSemantic.Assign)]
        UMSocialQQMessageType QqMessageType { get; set; }
    }

    // @interface UMSocialWechatSessionData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialWechatSessionData
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (assign, nonatomic) UMSocialWXMessageType wxMessageType;
        [Export("wxMessageType", ArgumentSemantic.Assign)]
        UMSocialWXMessageType WxMessageType { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }

        // @property (retain, nonatomic) NSData * fileData;
        [Export("fileData", ArgumentSemantic.Retain)]
        NSData FileData { get; set; }

        // @property (copy, nonatomic) NSString * extInfo;
        [Export("extInfo")]
        string ExtInfo { get; set; }
    }

    // @interface UMSocialWechatTimelineData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialWechatTimelineData
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (retain, nonatomic) NSData * fileData;
        [Export("fileData", ArgumentSemantic.Retain)]
        NSData FileData { get; set; }

        // @property (assign, nonatomic) UMSocialWXMessageType wxMessageType;
        [Export("wxMessageType", ArgumentSemantic.Assign)]
        UMSocialWXMessageType WxMessageType { get; set; }

        // @property (copy, nonatomic) NSString * extInfo;
        [Export("extInfo")]
        string ExtInfo { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialWechatFavorite : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialWechatFavorite
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (retain, nonatomic) NSData * fileData;
        [Export("fileData", ArgumentSemantic.Retain)]
        NSData FileData { get; set; }

        // @property (assign, nonatomic) UMSocialWXMessageType wxMessageType;
        [Export("wxMessageType", ArgumentSemantic.Assign)]
        UMSocialWXMessageType WxMessageType { get; set; }

        // @property (copy, nonatomic) NSString * extInfo;
        [Export("extInfo")]
        string ExtInfo { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialRenrenData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialRenrenData
    {
        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }

        // @property (copy, nonatomic) NSString * appName;
        [Export("appName")]
        string AppName { get; set; }
    }

    // @interface UMSocialDoubanData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialDoubanData
    {
    }

    // @interface UMSocialEmailData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialEmailData
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }
    }

    // @interface UMSocialSmsData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialSmsData
    {
    }

    // @interface UMSocialFacebookData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialFacebookData
    {
        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialYXSessionData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialYXSessionData
    {
        // @property (assign, nonatomic) UMSocialYXMessageType yxMessageType;
        [Export("yxMessageType", ArgumentSemantic.Assign)]
        UMSocialYXMessageType YxMessageType { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialYXTimelineData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialYXTimelineData
    {
        // @property (assign, nonatomic) UMSocialYXMessageType yxMessageType;
        [Export("yxMessageType", ArgumentSemantic.Assign)]
        UMSocialYXMessageType YxMessageType { get; set; }

        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialLWSessionData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialLWSessionData
    {
        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialLWTimelineData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialLWTimelineData
    {
        // @property (copy, nonatomic) NSString * url;
        [Export("url")]
        string Url { get; set; }
    }

    // @interface UMSocialInstagramData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialInstagramData
    {
    }

    // @interface UMSocialTwitterData : UMSocialSnsData
    [BaseType(typeof(UMSocialSnsData))]
    interface UMSocialTwitterData
    {
    }

    // @interface UMSocialExtConfig : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialExtConfig
    {
        // @property (retain, nonatomic) NSDictionary * snsDataDictionary;
        [Export("snsDataDictionary", ArgumentSemantic.Retain)]
        NSDictionary SnsDataDictionary { get; set; }

        // @property (retain, nonatomic) UMSocialSinaData * sinaData;
        [Export("sinaData", ArgumentSemantic.Retain)]
        UMSocialSinaData SinaData { get; set; }

        // @property (retain, nonatomic) UMSocialTencentData * tencentData;
        [Export("tencentData", ArgumentSemantic.Retain)]
        UMSocialTencentData TencentData { get; set; }

        // @property (retain, nonatomic) UMSocialWechatSessionData * wechatSessionData;
        [Export("wechatSessionData", ArgumentSemantic.Retain)]
        UMSocialWechatSessionData WechatSessionData { get; set; }

        // @property (retain, nonatomic) UMSocialWechatTimelineData * wechatTimelineData;
        [Export("wechatTimelineData", ArgumentSemantic.Retain)]
        UMSocialWechatTimelineData WechatTimelineData { get; set; }

        // @property (retain, nonatomic) UMSocialWechatFavorite * wechatFavoriteData;
        [Export("wechatFavoriteData", ArgumentSemantic.Retain)]
        UMSocialWechatFavorite WechatFavoriteData { get; set; }

        // @property (retain, nonatomic) UMSocialQQData * qqData;
        [Export("qqData", ArgumentSemantic.Retain)]
        UMSocialQQData QqData { get; set; }

        // @property (retain, nonatomic) UMSocialQzoneData * qzoneData;
        [Export("qzoneData", ArgumentSemantic.Retain)]
        UMSocialQzoneData QzoneData { get; set; }

        // @property (retain, nonatomic) UMSocialRenrenData * renrenData;
        [Export("renrenData", ArgumentSemantic.Retain)]
        UMSocialRenrenData RenrenData { get; set; }

        // @property (retain, nonatomic) UMSocialDoubanData * doubanData;
        [Export("doubanData", ArgumentSemantic.Retain)]
        UMSocialDoubanData DoubanData { get; set; }

        // @property (retain, nonatomic) UMSocialEmailData * emailData;
        [Export("emailData", ArgumentSemantic.Retain)]
        UMSocialEmailData EmailData { get; set; }

        // @property (retain, nonatomic) UMSocialSmsData * smsData;
        [Export("smsData", ArgumentSemantic.Retain)]
        UMSocialSmsData SmsData { get; set; }

        // @property (retain, nonatomic) UMSocialFacebookData * facebookData;
        [Export("facebookData", ArgumentSemantic.Retain)]
        UMSocialFacebookData FacebookData { get; set; }

        // @property (retain, nonatomic) UMSocialTwitterData * twitterData;
        [Export("twitterData", ArgumentSemantic.Retain)]
        UMSocialTwitterData TwitterData { get; set; }

        // @property (retain, nonatomic) UMSocialYXSessionData * yxsessionData;
        [Export("yxsessionData", ArgumentSemantic.Retain)]
        UMSocialYXSessionData YxsessionData { get; set; }

        // @property (retain, nonatomic) UMSocialYXTimelineData * yxtimelineData;
        [Export("yxtimelineData", ArgumentSemantic.Retain)]
        UMSocialYXTimelineData YxtimelineData { get; set; }

        // @property (retain, nonatomic) UMSocialLWSessionData * lwsessionData;
        [Export("lwsessionData", ArgumentSemantic.Retain)]
        UMSocialLWSessionData LwsessionData { get; set; }

        // @property (retain, nonatomic) UMSocialLWTimelineData * lwtimelineData;
        [Export("lwtimelineData", ArgumentSemantic.Retain)]
        UMSocialLWTimelineData LwtimelineData { get; set; }

        // @property (retain, nonatomic) UMSocialInstagramData * instagramData;
        [Export("instagramData", ArgumentSemantic.Retain)]
        UMSocialInstagramData InstagramData { get; set; }

        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (assign, nonatomic) UMSocialWXMessageType wxMessageType;
        [Export("wxMessageType", ArgumentSemantic.Assign)]
        UMSocialWXMessageType WxMessageType { get; set; }

        // @property (retain, nonatomic) id wxMediaObject;
        [Export("wxMediaObject", ArgumentSemantic.Retain)]
        NSObject WxMediaObject { get; set; }
    }

    // @interface UMSocialData : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialData
    {
        // @property (copy, nonatomic) NSString * identifier;
        [Export("identifier")]
        string Identifier { get; set; }

        // @property (copy, nonatomic) NSString * title;
        [Export("title")]
        string Title { get; set; }

        // @property (copy, nonatomic) NSString * shareText;
        [Export("shareText")]
        string ShareText { get; set; }

        // @property (copy, nonatomic) NSString * commentText;
        [Export("commentText")]
        string CommentText { get; set; }

        // @property (retain, nonatomic) id shareImage;
        [Export("shareImage", ArgumentSemantic.Retain)]
        NSObject ShareImage { get; set; }

        // @property (retain, nonatomic) UIImage * commentImage;
        [Export("commentImage", ArgumentSemantic.Retain)]
        UIImage CommentImage { get; set; }

        // @property (readonly, nonatomic) BOOL isLike;
        [Export("isLike")]
        bool IsLike { get; }

        // @property (readonly, nonatomic) NSDictionary * socialAccount;
        [Export("socialAccount")]
        NSDictionary SocialAccount { get; }

        // @property (retain, nonatomic) UMSocialUrlResource * urlResource;
        [Export("urlResource", ArgumentSemantic.Retain)]
        UMSocialUrlResource UrlResource { get; set; }

        // @property (retain, nonatomic) UMSocialExtConfig * extConfig;
        [Export("extConfig", ArgumentSemantic.Retain)]
        UMSocialExtConfig ExtConfig { get; set; }

        // +(NSString *)appKey;
        // +(void)setAppKey:(NSString *)appKey;
        [Static]
        [Export("appKey")]
        string AppKey { get; set; }

        // +(void)openLog:(BOOL)openLog;
        [Static]
        [Export("openLog:")]
        void OpenLog(bool openLog);

        // +(UMSocialData *)defaultData;
        [Static]
        [Export("defaultData")]
        UMSocialData DefaultData { get; }

        // -(id)initWithIdentifier:(NSString *)identifier;
        [Export("initWithIdentifier:")]
        IntPtr Constructor(string identifier);

        // -(id)initWithIdentifier:(NSString *)identifier withTitle:(NSString *)title;
        [Export("initWithIdentifier:withTitle:")]
        IntPtr Constructor(string identifier, string title);

        // -(NSInteger)getNumber:(UMSNumberType)numberType;
        [Export("getNumber:")]
        nint GetNumber(UMSNumberType numberType);
    }

    // @interface UMSocialResponseEntity : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialResponseEntity
    {
        // @property (assign, nonatomic) UMSResponseCode responseCode;
        [Export("responseCode", ArgumentSemantic.Assign)]
        UMSResponseCode ResponseCode { get; set; }

        // @property (assign, nonatomic) UMSResponse responseType;
        [Export("responseType", ArgumentSemantic.Assign)]
        UMSResponse ResponseType { get; set; }

        // @property (assign, nonatomic) UMSViewControllerType viewControllerType;
        [Export("viewControllerType", ArgumentSemantic.Assign)]
        UMSViewControllerType ViewControllerType { get; set; }

        // @property (retain, nonatomic) NSString * message;
        [Export("message", ArgumentSemantic.Retain)]
        string Message { get; set; }

        // @property (retain, nonatomic) NSDictionary * data;
        [Export("data", ArgumentSemantic.Retain)]
        NSDictionary Data { get; set; }

        // @property (retain, nonatomic) NSError * error;
        [Export("error", ArgumentSemantic.Retain)]
        NSError Error { get; set; }

        // -(NSString *)description;
        [Export("description")]
        string Description { get; }
    }

    // @protocol UMSocialDataDelegate <NSObject>
    [Protocol, Model]
    [BaseType(typeof(NSObject))]
    interface UMSocialDataDelegate
    {
        // @required -(void)didFinishGetUMSocialDataResponse:(UMSocialResponseEntity *)response;
        [Abstract]
        [Export("didFinishGetUMSocialDataResponse:")]
        void DidFinishGetUMSocialDataResponse(UMSocialResponseEntity response);
    }

    // typedef void (^UMSocialDataServiceCompletion)(UMSocialResponseEntity *);
    delegate void UMSocialDataServiceCompletion(UMSocialResponseEntity arg0);

    // @interface UMSocialDataService : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialDataService
    {
        // @property (copy, nonatomic) UMSocialDataServiceCompletion completion;
        [Export("completion", ArgumentSemantic.Copy)]
        UMSocialDataServiceCompletion Completion { get; set; }

        // @property (retain, nonatomic) UMSocialData * socialData;
        [Export("socialData", ArgumentSemantic.Retain)]
        UMSocialData SocialData { get; set; }

        [Wrap("WeakSocialDataDelegate")]
        UMSocialDataDelegate SocialDataDelegate { get; }

        // @property (readonly, nonatomic) id<UMSocialDataDelegate> socialDataDelegate;
        [NullAllowed, Export("socialDataDelegate")]
        NSObject WeakSocialDataDelegate { get; }

        // +(UMSocialDataService *)defaultDataService;
        [Static]
        [Export("defaultDataService")]
        UMSocialDataService DefaultDataService { get; }

        // -(id)initWithUMSocialData:(UMSocialData *)socialData;
        [Export("initWithUMSocialData:")]
        IntPtr Constructor(UMSocialData socialData);

        // -(void)setUMSocialDelegate:(id<UMSocialDataDelegate>)delegate;
        [Export("setUMSocialDelegate:")]
        void SetUMSocialDelegate(UMSocialDataDelegate @del);

        // -(void)requestSocialDataWithCompletion:(UMSocialDataServiceCompletion)completion;
        [Export("requestSocialDataWithCompletion:")]
        void RequestSocialDataWithCompletion(UMSocialDataServiceCompletion completion);

        // -(void)postSNSWithTypes:(NSArray *)platformTypes content:(NSString *)content image:(id)image location:(CLLocation *)location urlResource:(UMSocialUrlResource *)urlResource completion:(UMSocialDataServiceCompletion)completion;
        [Export("postSNSWithTypes:content:image:location:urlResource:completion:")]
        void PostSNSWithTypes(NSObject[] platformTypes, string content, NSObject image, CLLocation location, UMSocialUrlResource urlResource, UMSocialDataServiceCompletion completion);

        // -(void)postSNSWithTypes:(NSArray *)platformTypes content:(NSString *)content image:(id)image location:(CLLocation *)location urlResource:(UMSocialUrlResource *)urlResource presentedController:(UIViewController *)presentedController completion:(UMSocialDataServiceCompletion)completion;
        [Export("postSNSWithTypes:content:image:location:urlResource:presentedController:completion:")]
        void PostSNSWithTypes(NSObject[] platformTypes, string content, NSObject image, CLLocation location, UMSocialUrlResource urlResource, UIViewController presentedController, UMSocialDataServiceCompletion completion);

        // -(void)postAddLikeOrCancelWithCompletion:(UMSocialDataServiceCompletion)completion;
        [Export("postAddLikeOrCancelWithCompletion:")]
        void PostAddLikeOrCancelWithCompletion(UMSocialDataServiceCompletion completion);

        // -(void)postCommentWithContent:(NSString *)content completion:(UMSocialDataServiceCompletion)completion;
        [Export("postCommentWithContent:completion:")]
        void PostCommentWithContent(string content, UMSocialDataServiceCompletion completion);

        // -(void)postCommentWithContent:(NSString *)content image:(UIImage *)image templateText:(NSString *)templateText location:(CLLocation *)location shareToSNSWithUsid:(NSDictionary *)shareToSNS completion:(UMSocialDataServiceCompletion)completion;
        [Export("postCommentWithContent:image:templateText:location:shareToSNSWithUsid:completion:")]
        void PostCommentWithContent(string content, UIImage image, string templateText, CLLocation location, NSDictionary shareToSNS, UMSocialDataServiceCompletion completion);

        // -(void)requestCommentList:(long long)lastCommentTime completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestCommentList:completion:")]
        void RequestCommentList(long lastCommentTime, UMSocialDataServiceCompletion completion);

        // -(void)requestSocialAccountWithCompletion:(UMSocialDataServiceCompletion)completion;
        [Export("requestSocialAccountWithCompletion:")]
        void RequestSocialAccountWithCompletion(UMSocialDataServiceCompletion completion);

        // -(void)requestUnOauthWithType:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestUnOauthWithType:completion:")]
        void RequestUnOauthWithType(string platformType, UMSocialDataServiceCompletion completion);

        // -(void)requestBindToSnsWithType:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestBindToSnsWithType:completion:")]
        void RequestBindToSnsWithType(string platformType, UMSocialDataServiceCompletion completion);

        // -(void)requestUnBindToSnsWithCompletion:(UMSocialDataServiceCompletion)completion;
        [Export("requestUnBindToSnsWithCompletion:")]
        void RequestUnBindToSnsWithCompletion(UMSocialDataServiceCompletion completion);

        // -(void)requestSnsInformation:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestSnsInformation:completion:")]
        void RequestSnsInformation(string platformType, UMSocialDataServiceCompletion completion);

        // -(void)requestSnsFriends:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestSnsFriends:completion:")]
        void RequestSnsFriends(string platformType, UMSocialDataServiceCompletion completion);

        // -(void)requestAddFollow:(NSString *)platformType followedUsid:(NSArray *)usids completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestAddFollow:followedUsid:completion:")]

        void RequestAddFollow(string platformType, NSObject[] usids, UMSocialDataServiceCompletion completion);

        // -(void)requestIsTokenValid:(NSArray *)snsArray completion:(UMSocialDataServiceCompletion)completion;
        [Export("requestIsTokenValid:completion:")]

        void RequestIsTokenValid(NSObject[] snsArray, UMSocialDataServiceCompletion completion);
    }

    // @protocol UMSocialUIDelegate <NSObject>
    [Protocol, Model]
    [BaseType(typeof(NSObject))]
    interface UMSocialUIDelegate
    {
        // @optional -(BOOL)closeOauthWebViewController:(UINavigationController *)navigationCtroller socialControllerService:(UMSocialControllerService *)socialControllerService;
        [Export("closeOauthWebViewController:socialControllerService:")]
        bool CloseOauthWebViewController(UINavigationController navigationCtroller, UMSocialControllerService socialControllerService);

        // @optional -(void)didCloseUIViewController:(UMSViewControllerType)fromViewControllerType;
        [Export("didCloseUIViewController:")]
        void DidCloseUIViewController(UMSViewControllerType fromViewControllerType);

        // @optional -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response;
        [Export("didFinishGetUMSocialDataInViewController:")]
        void DidFinishGetUMSocialDataInViewController(UMSocialResponseEntity response);

        // @optional -(void)didSelectSocialPlatform:(NSString *)platformName withSocialData:(UMSocialData *)socialData;
        [Export("didSelectSocialPlatform:withSocialData:")]
        void DidSelectSocialPlatform(string platformName, UMSocialData socialData);

        // @optional -(BOOL)isDirectShareInIconActionSheet;
        [Export("isDirectShareInIconActionSheet")]

        bool IsDirectShareInIconActionSheet { get; }
    }

    // @interface UMSocialControllerService : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialControllerService
    {
        // @property (retain, nonatomic) UMSocialData * socialData;
        [Export("socialData", ArgumentSemantic.Retain)]
        UMSocialData SocialData { get; set; }

        // @property (readonly, nonatomic) UMSocialDataService * socialDataService;
        [Export("socialDataService")]
        UMSocialDataService SocialDataService { get; }

        // @property (assign, nonatomic) UIViewController * currentViewController;
        [Export("currentViewController", ArgumentSemantic.Assign)]
        UIViewController CurrentViewController { get; set; }

        // @property (assign, nonatomic) UINavigationController * currentNavigationController;
        [Export("currentNavigationController", ArgumentSemantic.Assign)]
        UINavigationController CurrentNavigationController { get; set; }

        [Wrap("WeakSocialUIDelegate")]
        UMSocialUIDelegate SocialUIDelegate { get; set; }

        // @property (assign, nonatomic) id<UMSocialUIDelegate> socialUIDelegate;
        [NullAllowed, Export("socialUIDelegate", ArgumentSemantic.Assign)]
        NSObject WeakSocialUIDelegate { get; set; }

        // @property (retain, nonatomic) NSString * currentSnsPlatformName;
        [Export("currentSnsPlatformName", ArgumentSemantic.Retain)]
        string CurrentSnsPlatformName { get; set; }

        // @property (assign, nonatomic) UMSViewControllerType nextViewController;
        [Export("nextViewController", ArgumentSemantic.Assign)]
        UMSViewControllerType NextViewController { get; set; }

        // +(UMSocialControllerService *)defaultControllerService;
        [Static]
        [Export("defaultControllerService")]

        UMSocialControllerService DefaultControllerService { get; }

        // -(id)initWithUMSocialData:(UMSocialData *)socialData;
        [Export("initWithUMSocialData:")]
        IntPtr Constructor(UMSocialData socialData);

        // -(void)setShareText:(NSString *)shareText shareImage:(id)shareImage socialUIDelegate:(id<UMSocialUIDelegate>)socialUIDelegate;
        [Export("setShareText:shareImage:socialUIDelegate:")]
        void SetShareText(string shareText, NSObject shareImage, UMSocialUIDelegate socialUIDelegate);

        // -(UINavigationController *)getSocialShareListController;
        [Export("getSocialShareListController")]

        UINavigationController SocialShareListController { get; }

        // -(UINavigationController *)getSocialShareEditController:(NSString *)platformType;
        [Export("getSocialShareEditController:")]
        UINavigationController GetSocialShareEditController(string platformType);

        // -(UINavigationController *)getSocialOauthController:(NSString *)platformType;
        [Export("getSocialOauthController:")]
        UINavigationController GetSocialOauthController(string platformType);

        // -(id)getSocialIconActionSheetInController:(UIViewController *)controller;
        [Export("getSocialIconActionSheetInController:")]
        NSObject GetSocialIconActionSheetInController(UIViewController controller);

        // -(UIViewController *)getSocialViewController:(UMSViewControllerType)viewControllerType withSnsType:(NSString *)snsName;
        [Export("getSocialViewController:withSnsType:")]
        UIViewController GetSocialViewController(UMSViewControllerType viewControllerType, string snsName);
    }

    // @interface UMSocialControllerServiceComment : UMSocialControllerService
    [BaseType(typeof(UMSocialControllerService))]
    [Protocol]
    interface UMSocialControllerServiceComment
    {
        // +(UMSocialControllerServiceComment *)defaultControllerService;
        [Static]
        [Export("defaultControllerService")]

        UMSocialControllerServiceComment DefaultControllerService { get; }

        // -(UINavigationController *)getSocialCommentListController;
        [Export("getSocialCommentListController")]

        UINavigationController SocialCommentListController { get; }

        // -(UINavigationController *)getSocialAccountController;
        [Export("getSocialAccountController")]

        UINavigationController SocialAccountController { get; }

        // -(UINavigationController *)getSnsAccountController;
        [Export("getSnsAccountController")]

        UINavigationController SnsAccountController { get; }

        // -(UINavigationController *)getSocialLoginController;
        [Export("getSocialLoginController")]

        UINavigationController SocialLoginController { get; }
    }

    // @interface UMSocialAccountEntity : NSObject <NSCoding>
    [BaseType(typeof(NSObject))]
    interface UMSocialAccountEntity : INSCoding
    {
        // @property (copy, nonatomic) NSString * platformName;
        [Export("platformName")]
        string PlatformName { get; set; }

        // @property (copy, nonatomic) NSString * userName;
        [Export("userName")]
        string UserName { get; set; }

        // @property (copy, nonatomic) NSString * usid;
        [Export("usid")]
        string Usid { get; set; }

        // @property (copy, nonatomic) NSString * iconURL;
        [Export("iconURL")]
        string IconURL { get; set; }

        // @property (copy, nonatomic) NSString * accessToken;
        [Export("accessToken")]
        string AccessToken { get; set; }

        // @property (copy, nonatomic) NSString * profileURL;
        [Export("profileURL")]
        string ProfileURL { get; set; }

        // @property (nonatomic) BOOL isFirstOauth;
        [Export("isFirstOauth")]
        bool IsFirstOauth { get; set; }

        // @property (copy, nonatomic) NSString * openId;
        [Export("openId")]
        string OpenId { get; set; }

        // @property (retain, nonatomic) NSDate * expirationDate;
        [Export("expirationDate", ArgumentSemantic.Retain)]
        NSDate ExpirationDate { get; set; }

        // @property (copy, nonatomic) NSString * refreshToken;
        [Export("refreshToken")]
        string RefreshToken { get; set; }

        // @property (copy, nonatomic) NSString * unionId;
        [Export("unionId")]
        string UnionId { get; set; }

        // -(id)initWithPlatformName:(NSString *)platformName;
        [Export("initWithPlatformName:")]
        IntPtr Constructor(string platformName);

        // -(NSString *)description;
        [Export("description")]

        string Description { get; }
    }

     
    partial
        interface
        Constants
    {
        [Field("UMSCustomAccountGenderMale")]
        NSString UMSCustomAccountGenderMale { get; }

        // extern NSString *const UMSCustomAccountGenderFeMale;
        [Field("UMSCustomAccountGenderFeMale")]
        NSString UMSCustomAccountGenderFeMale { get; }
    }

    // @interface UMSocialCustomAccount : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialCustomAccount
    {
        // @property (copy, nonatomic) NSString * userName;
        [Export("userName")]
        string UserName { get; set; }

        // @property (copy, nonatomic) NSString * usid;
        [Export("usid")]
        string Usid { get; set; }

        // @property (copy, nonatomic) NSString * gender;
        [Export("gender")]
        string Gender { get; set; }

        // @property (retain, nonatomic) NSDate * birthday;
        [Export("birthday", ArgumentSemantic.Retain)]
        NSDate Birthday { get; set; }

        // @property (copy, nonatomic) NSString * profileUrl;
        [Export("profileUrl")]
        string ProfileUrl { get; set; }

        // @property (copy, nonatomic) NSString * iconUrl;
        [Export("iconUrl")]
        string IconUrl { get; set; }

        // @property (retain, nonatomic) NSDictionary * customData;
        [Export("customData", ArgumentSemantic.Retain)]
        NSDictionary CustomData { get; set; }

        // -(id)initWithUserName:(NSString *)userName;
        [Export("initWithUserName:")]
        IntPtr Constructor(string userName);
    }

    // @interface UMSocialAccountManager : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialAccountManager
    {
        // +(NSDictionary *)socialAccountDictionary;
        [Static]
        [Export("socialAccountDictionary")]

        NSDictionary SocialAccountDictionary { get; }

        // +(void)postSnsAccount:(UMSocialAccountEntity *)snsAccount completion:(UMSocialDataServiceCompletion)completion;
        [Static]
        [Export("postSnsAccount:completion:")]
        void PostSnsAccount(UMSocialAccountEntity snsAccount, UMSocialDataServiceCompletion completion);

        // +(void)postCustomAccount:(UMSocialCustomAccount *)customAccount completion:(UMSocialDataServiceCompletion)completion;
        [Static]
        [Export("postCustomAccount:completion:")]
        void PostCustomAccount(UMSocialCustomAccount customAccount, UMSocialDataServiceCompletion completion);

        // +(void)setSnsAccount:(UMSocialAccountEntity *)snsAccount;
        [Static]
        [Export("setSnsAccount:")]
        void SetSnsAccount(UMSocialAccountEntity snsAccount);

        // +(BOOL)isLogin;
        [Static]
        [Export("isLogin")]

        bool IsLogin { get; }

        // +(BOOL)isLoginWithSnsAccount;
        [Static]
        [Export("isLoginWithSnsAccount")]

        bool IsLoginWithSnsAccount { get; }

        // +(BOOL)isOauthWithPlatform:(NSString *)platformType;
        [Static]
        [Export("isOauthWithPlatform:")]
        bool IsOauthWithPlatform(string platformType);

        // +(BOOL)isOauthAndTokenNotExpired:(NSString *)platformType;
        [Static]
        [Export("isOauthAndTokenNotExpired:")]
        bool IsOauthAndTokenNotExpired(string platformType);

        // +(BOOL)isLoginWithAnonymous;
        // +(void)setIsLoginWithAnonymous:(BOOL)anonymous;
        [Static]
        [Export("isLoginWithAnonymous")]

        bool IsLoginWithAnonymous { get; set; }
    }

     
    partial
        interface
        UMSocialSnsPlatformManager
    {
        [Field("UMShareToSina", "__Internal")]
        NSString UMShareToSina { get; }

        // extern NSString *const UMShareToTencent;
        [Field("UMShareToTencent", "__Internal")]
        NSString UMShareToTencent { get; }

        // extern NSString *const UMShareToRenren;
        [Field("UMShareToRenren", "__Internal")]
        NSString UMShareToRenren { get; }

        // extern NSString *const UMShareToDouban;
        [Field("UMShareToDouban", "__Internal")]
        NSString UMShareToDouban { get; }

        // extern NSString *const UMShareToQzone;
        [Field("UMShareToQzone", "__Internal")]
        NSString UMShareToQzone { get; }

        // extern NSString *const UMShareToEmail;
        [Field("UMShareToEmail", "__Internal")]
        NSString UMShareToEmail { get; }

        // extern NSString *const UMShareToSms;
        [Field("UMShareToSms", "__Internal")]
        NSString UMShareToSms { get; }

        // extern NSString *const UMShareToWechatSession;
        [Field("UMShareToWechatSession", "__Internal")]
        NSString UMShareToWechatSession { get; }

        // extern NSString *const UMShareToWechatTimeline;
        [Field("UMShareToWechatTimeline", "__Internal")]
        NSString UMShareToWechatTimeline { get; }

        // extern NSString *const UMShareToWechatFavorite;
        [Field("UMShareToWechatFavorite", "__Internal")]
        NSString UMShareToWechatFavorite { get; }

        // extern NSString *const UMShareToQQ;
        [Field("UMShareToQQ", "__Internal")]
        NSString UMShareToQQ { get; }

        // extern NSString *const UMShareToFacebook;
        [Field("UMShareToFacebook", "__Internal")]
        NSString UMShareToFacebook { get; }

        // extern NSString *const UMShareToTwitter;
        [Field("UMShareToTwitter", "__Internal")]
        NSString UMShareToTwitter { get; }

        // extern NSString *const UMShareToYXSession;
        [Field("UMShareToYXSession", "__Internal")]
        NSString UMShareToYXSession { get; }

        // extern NSString *const UMShareToYXTimeline;
        [Field("UMShareToYXTimeline", "__Internal")]
        NSString UMShareToYXTimeline { get; }

        // extern NSString *const UMShareToLWSession;
        [Field("UMShareToLWSession", "__Internal")]
        NSString UMShareToLWSession { get; }

        // extern NSString *const UMShareToLWTimeline;
        [Field("UMShareToLWTimeline", "__Internal")]
        NSString UMShareToLWTimeline { get; }

        // extern NSString *const UMShareToInstagram;
        [Field("UMShareToInstagram", "__Internal")]
        NSString UMShareToInstagram { get; }

        // extern NSString *const UMShareToWhatsapp;
        [Field("UMShareToWhatsapp", "__Internal")]
        NSString UMShareToWhatsapp { get; }

        // extern NSString *const UMShareToLine;
        [Field("UMShareToLine", "__Internal")]
        NSString UMShareToLine { get; }

        // extern NSString *const UMShareToTumblr;
        [Field("UMShareToTumblr", "__Internal")]
        NSString UMShareToTumblr { get; }

        // extern NSString *const UMShareToPinterest;
        [Field("UMShareToPinterest", "__Internal")]
        NSString UMShareToPinterest { get; }

        // extern NSString *const UMShareToKakaoTalk;
        [Field("UMShareToKakaoTalk", "__Internal")]
        NSString UMShareToKakaoTalk { get; }

        // extern NSString *const UMShareToFlickr;
        [Field("UMShareToFlickr", "__Internal")]
        NSString UMShareToFlickr { get; }
        
    }

    partial interface Constants
    {
        // extern NSString *const UMShareToSina;
        [Field("UMShareToSina")]
        NSString UMShareToSina { get; }

        // extern NSString *const UMShareToTencent;
        [Field("UMShareToTencent")]
        NSString UMShareToTencent { get; }

        // extern NSString *const UMShareToRenren;
        [Field("UMShareToRenren")]
        NSString UMShareToRenren { get; }

        // extern NSString *const UMShareToDouban;
        [Field("UMShareToDouban")]
        NSString UMShareToDouban { get; }

        // extern NSString *const UMShareToQzone;
        [Field("UMShareToQzone")]
        NSString UMShareToQzone { get; }

        // extern NSString *const UMShareToEmail;
        [Field("UMShareToEmail")]
        NSString UMShareToEmail { get; }

        // extern NSString *const UMShareToSms;
        [Field("UMShareToSms")]
        NSString UMShareToSms { get; }

        // extern NSString *const UMShareToWechatSession;
        [Field("UMShareToWechatSession")]
        NSString UMShareToWechatSession { get; }

        // extern NSString *const UMShareToWechatTimeline;
        [Field("UMShareToWechatTimeline")]
        NSString UMShareToWechatTimeline { get; }

        // extern NSString *const UMShareToWechatFavorite;
        [Field("UMShareToWechatFavorite")]
        NSString UMShareToWechatFavorite { get; }

        // extern NSString *const UMShareToQQ;
        [Field("UMShareToQQ")]
        NSString UMShareToQQ { get; }

        // extern NSString *const UMShareToFacebook;
        [Field("UMShareToFacebook")]
        NSString UMShareToFacebook { get; }

        // extern NSString *const UMShareToTwitter;
        [Field("UMShareToTwitter")]
        NSString UMShareToTwitter { get; }

        // extern NSString *const UMShareToYXSession;
        [Field("UMShareToYXSession")]
        NSString UMShareToYXSession { get; }

        // extern NSString *const UMShareToYXTimeline;
        [Field("UMShareToYXTimeline")]
        NSString UMShareToYXTimeline { get; }

        // extern NSString *const UMShareToLWSession;
        [Field("UMShareToLWSession")]
        NSString UMShareToLWSession { get; }

        // extern NSString *const UMShareToLWTimeline;
        [Field("UMShareToLWTimeline")]
        NSString UMShareToLWTimeline { get; }

        // extern NSString *const UMShareToInstagram;
        [Field("UMShareToInstagram")]
        NSString UMShareToInstagram { get; }

        // extern NSString *const UMShareToWhatsapp;
        [Field("UMShareToWhatsapp")]
        NSString UMShareToWhatsapp { get; }

        // extern NSString *const UMShareToLine;
        [Field("UMShareToLine")]
        NSString UMShareToLine { get; }

        // extern NSString *const UMShareToTumblr;
        [Field("UMShareToTumblr")]
        NSString UMShareToTumblr { get; }

        // extern NSString *const UMShareToPinterest;
        [Field("UMShareToPinterest")]
        NSString UMShareToPinterest { get; }

        // extern NSString *const UMShareToKakaoTalk;
        [Field("UMShareToKakaoTalk")]
        NSString UMShareToKakaoTalk { get; }

        // extern NSString *const UMShareToFlickr;
        [Field("UMShareToFlickr")]
        NSString UMShareToFlickr { get; }
    }

    // typedef void (^UMSocialSnsPlatformClickHandler)(UIViewController *UMSocialControllerService *BOOL);
    delegate void UMSocialSnsPlatformClickHandler(UIViewController arg0,UMSocialControllerService arg1,bool arg2);

    // typedef void (^UMSocialSnsPlatformLoginHandler)(UIViewController *UMSocialControllerService *BOOLUMSocialDataServiceCompletion);
    delegate void UMSocialSnsPlatformLoginHandler(UIViewController arg0,UMSocialControllerService arg1,bool arg2,UMSocialDataServiceCompletion arg3);

    // @interface UMSocialSnsPlatform : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialSnsPlatform
    {
        // @property (copy, nonatomic) NSString * platformName;
        [Export("platformName")]
        string PlatformName { get; set; }

        // @property (copy, nonatomic) NSString * displayName;
        [Export("displayName")]
        string DisplayName { get; set; }

        // @property (copy, nonatomic) NSString * loginName;
        [Export("loginName")]
        string LoginName { get; set; }

        // @property (assign, nonatomic) UMSocialSnsType shareToType;
        [Export("shareToType", ArgumentSemantic.Assign)]
        UMSocialSnsType ShareToType { get; set; }

        // @property (copy, nonatomic) NSString * bigImageName;
        [Export("bigImageName")]
        string BigImageName { get; set; }

        // @property (copy, nonatomic) NSString * smallImageName;
        [Export("smallImageName")]
        string SmallImageName { get; set; }

        // @property (copy, nonatomic) NSString * smallImageOffName;
        [Export("smallImageOffName")]
        string SmallImageOffName { get; set; }

        // @property (copy, nonatomic) UMSocialSnsPlatformClickHandler snsClickHandler;
        [Export("snsClickHandler", ArgumentSemantic.Copy)]
        UMSocialSnsPlatformClickHandler SnsClickHandler { get; set; }

        // @property (copy, nonatomic) UMSocialSnsPlatformLoginHandler loginClickHandler;
        [Export("loginClickHandler", ArgumentSemantic.Copy)]
        UMSocialSnsPlatformLoginHandler LoginClickHandler { get; set; }

        // @property (assign, nonatomic) BOOL needLogin;
        [Export("needLogin")]
        bool NeedLogin { get; set; }

        // @property (assign, nonatomic) BOOL haveWebViewAuth;
        [Export("haveWebViewAuth")]
        bool HaveWebViewAuth { get; set; }

        // -(id)initWithPlatformName:(NSString *)platformName;
        [Export("initWithPlatformName:")]
        IntPtr Constructor(string platformName);
    }

    // @interface UMSocialSnsPlatformManager : NSObject
    [BaseType(typeof(NSObject))]
    partial interface UMSocialSnsPlatformManager
    {
        // @property (readonly, nonatomic) NSArray * allSnsValuesArray;
        [Export("allSnsValuesArray")]

        NSObject[] AllSnsValuesArray { get; }

        // @property (retain, nonatomic) NSDictionary * allSnsPlatformDictionary;
        [Export("allSnsPlatformDictionary", ArgumentSemantic.Retain)]
        NSDictionary AllSnsPlatformDictionary { get; set; }

        // +(UMSocialSnsPlatformManager *)sharedInstance;
        [Static]
        [Export("sharedInstance")]

        UMSocialSnsPlatformManager SharedInstance { get; }

        // +(UMSocialSnsPlatform *)getSocialPlatformWithName:(NSString *)snsName;
        [Static]
        [Export("getSocialPlatformWithName:")]
        UMSocialSnsPlatform GetSocialPlatformWithName(string snsName);

        // +(NSString *)getSnsPlatformString:(UMSocialSnsType)socialSnsType;
        [Static]
        [Export("getSnsPlatformString:")]
        string GetSnsPlatformString(UMSocialSnsType socialSnsType);

        // +(NSString *)getSnsPlatformStringFromIndex:(NSInteger)snsIndex;
        [Static]
        [Export("getSnsPlatformStringFromIndex:")]
        string GetSnsPlatformStringFromIndex(nint snsIndex);
    }

    // @interface UMSocialIconActionSheet : UIView
    [BaseType(typeof(UIView))]
    interface UMSocialIconActionSheet
    {
        // -(void)showInView:(UIView *)showView;
        [Export("showInView:")]
        void ShowInView(UIView showView);

        // -(void)dismiss;
        [Export("dismiss")]
        void Dismiss();
    }

    // @interface UMSocialSnsService : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialSnsService
    {
        // +(void)applicationDidBecomeActive;
        [Static]
        [Export("applicationDidBecomeActive")]
        void ApplicationDidBecomeActive();

        // +(BOOL)handleOpenURL:(NSURL *)url;
        [Static]
        [Export("handleOpenURL:")]
        bool HandleOpenURL(NSUrl url);

        // +(BOOL)handleOpenURL:(NSURL *)url wxApiDelegate:(id<WXApiDelegate>)wxApiDelegate;
        [Static]
        [Export("handleOpenURL:wxApiDelegate:")]
        bool HandleOpenURL(NSUrl url, [NullAllowed]WXApiDelegate wxApiDelegate);

        // +(void)presentSnsController:(UIViewController *)controller appKey:(NSString *)appKey shareText:(NSString *)shareText shareImage:(id)shareImage shareToSnsNames:(NSArray *)snsNames delegate:(id<UMSocialUIDelegate>)delegate;
        [Static]
        [Export("presentSnsController:appKey:shareText:shareImage:shareToSnsNames:delegate:")]

        void PresentSnsController(UIViewController controller, string appKey, string shareText,[NullAllowed] NSObject shareImage, [NullAllowed]NSObject[] snsNames, [NullAllowed]UMSocialUIDelegate @del);

        // +(void)presentSnsIconSheetView:(UIViewController *)controller appKey:(NSString *)appKey shareText:(NSString *)shareText shareImage:(id)shareImage shareToSnsNames:(NSArray *)snsNames delegate:(id<UMSocialUIDelegate>)delegate;
        [Static]
        [Export("presentSnsIconSheetView:appKey:shareText:shareImage:shareToSnsNames:delegate:")]

        void PresentSnsIconSheetView(UIViewController controller, string appKey, string shareText, [NullAllowed]NSObject shareImage, [NullAllowed]NSObject[] snsNames, [NullAllowed]UMSocialUIDelegate @del);

        // +(UMSocialSnsService *)sharedInstance;
        [Static]
        [Export("sharedInstance")]

        UMSocialSnsService SharedInstance { get; }
    }


    partial interface Constants
    {
        // extern NSString *const UMSocialShare;
        [Field("UMSocialShare")]
        NSString UMSocialShare { get; }

        // extern NSString *const UMSocialLike;
        [Field("UMSocialLike")]
        NSString UMSocialLike { get; }

        // extern NSString *const UMSocialComment;
        [Field("UMSocialComment")]
        NSString UMSocialComment { get; }

        // extern NSString *const UMSocialAccount;
        [Field("UMSocialAccount")]
        NSString UMSocialAccount { get; }
    }

    // typedef void (^ClickHandler)();
    delegate void ClickHandler();

    // @interface UMSocialButton : UIButton
    [BaseType(typeof(UIButton))]
    [Protocol]
    interface UMSocialButton
    {
        // @property (copy, nonatomic) ClickHandler clickHandler;
        [Export("clickHandler", ArgumentSemantic.Copy)]
        ClickHandler ClickHandler { get; set; }

        [Wrap("WeakSocialUIDelegate")]
        UMSocialUIDelegate SocialUIDelegate { get; set; }

        // @property (assign, nonatomic) id<UMSocialUIDelegate> socialUIDelegate;
        [NullAllowed, Export("socialUIDelegate", ArgumentSemantic.Assign)]
        NSObject WeakSocialUIDelegate { get; set; }

        // @property (copy, nonatomic) NSString * buttonName;
        [Export("buttonName")]
        string ButtonName { get; set; }

        // -(id)initWithButtonName:(NSString *)buttonName socialData:(UMSocialData *)socialData controller:(UIViewController *)controller;
        [Export("initWithButtonName:socialData:controller:")]
        IntPtr Constructor(string buttonName, UMSocialData socialData, UIViewController controller);

        // -(id)initWithButtonName:(NSString *)buttonName controllerService:(UMSocialControllerServiceComment *)controllerService controller:(UIViewController *)controller;
        [Export("initWithButtonName:controllerService:controller:")]
        IntPtr Constructor(string buttonName, UMSocialControllerServiceComment controllerService, UIViewController controller);
    }

    // @interface UMSocialBar : UIView
    [BaseType(typeof(UIView))]
    [Protocol]
    interface UMSocialBar
    {
        // @property (retain, nonatomic) NSMutableArray * barButtons;
        [Export("barButtons", ArgumentSemantic.Retain)]
        NSMutableArray BarButtons { get; set; }

        // @property (retain, nonatomic) UMSocialData * socialData;
        [Export("socialData", ArgumentSemantic.Retain)]
        UMSocialData SocialData { get; set; }

        [Wrap("WeakSocialUIDelegate")]
        UMSocialUIDelegate SocialUIDelegate { get; set; }

        // @property (assign, nonatomic) id<UMSocialUIDelegate> socialUIDelegate;
        [NullAllowed, Export("socialUIDelegate", ArgumentSemantic.Assign)]
        NSObject WeakSocialUIDelegate { get; set; }

        // -(id)initWithUMSocialData:(UMSocialData *)socialData withViewController:(UIViewController *)viewController;
        [Export("initWithUMSocialData:withViewController:")]
        IntPtr Constructor(UMSocialData socialData, UIViewController viewController);

        // -(void)updateButtonNumber;
        [Export("updateButtonNumber")]
        void UpdateButtonNumber();

        // -(void)requestUpdateButtonNumber;
        [Export("requestUpdateButtonNumber")]
        void RequestUpdateButtonNumber();
    }

    // typedef void (^UMGridViewConfig)(CGContextRefUIImageView *UILabel *);
    delegate void UMGridViewConfig(NSObject arg0,UIImageView arg1,UILabel arg2);

    // typedef void (^UMNavigationBarConfig)(UINavigationBar *UIButton *UIButton *UIButton *UIButton *UINavigationItem *);
    delegate void UMNavigationBarConfig(UINavigationBar arg0,UIButton arg1,UIButton arg2,UIButton arg3,UIButton arg4,UINavigationItem arg5);

    // typedef void (^UMTableViewCellConfig)(UITableViewCell *UMSViewControllerType);
    delegate void UMTableViewCellConfig(UITableViewCell arg0,UMSViewControllerType arg1);

    // @interface UMSocialConfig : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialConfig
    {
        // +(void)setSnsPlatformNames:(NSArray *)platformNames;
        [Static]
        [Export("setSnsPlatformNames:")]

        void SetSnsPlatformNames(NSObject[] platformNames);

        // +(void)setSupportedInterfaceOrientations:(UIInterfaceOrientationMask)interfaceOrientations;
        [Static]
        [Export("setSupportedInterfaceOrientations:")]
        void SetSupportedInterfaceOrientations(UIInterfaceOrientationMask interfaceOrientations);

        // +(void)setTheme:(UMSocialTheme)theme;
        [Static]
        [Export("setTheme:")]
        void SetTheme(UMSocialTheme theme);

        // +(void)setShareGridViewTheme:(UMGridViewConfig)gridViewConfig;
        [Static]
        [Export("setShareGridViewTheme:")]
        void SetShareGridViewTheme(UMGridViewConfig gridViewConfig);

        // +(void)setNavigationBarConfig:(UMNavigationBarConfig)navigationConfig;
        [Static]
        [Export("setNavigationBarConfig:")]
        void SetNavigationBarConfig(UMNavigationBarConfig navigationConfig);

        // +(void)setTableViewCellConfig:(UMTableViewCellConfig)tableViewCellConfig;
        [Static]
        [Export("setTableViewCellConfig:")]
        void SetTableViewCellConfig(UMTableViewCellConfig tableViewCellConfig);

        // +(void)setFinishToastIsHidden:(BOOL)isHidden position:(UMSocialiToastPosition)toastPosition;
        [Static]
        [Export("setFinishToastIsHidden:position:")]
        void SetFinishToastIsHidden(bool isHidden, UMSocialiToastPosition toastPosition);

        // +(void)setFollowWeiboUids:(NSDictionary *)weiboUids;
        [Static]
        [Export("setFollowWeiboUids:")]
        void SetFollowWeiboUids(NSDictionary weiboUids);

        // +(void)addSocialSnsPlatform:(NSArray *)snsPlatformArray;
        [Static]
        [Export("addSocialSnsPlatform:")]

        void AddSocialSnsPlatform(NSObject[] snsPlatformArray);

        // +(void)setDefaultColor:(UIColor *)defaultColor;
        [Static]
        [Export("setDefaultColor:")]
        void SetDefaultColor(UIColor defaultColor);

        // +(void)setBoundsSizeForiPad:(CGSize)size;
        [Static]
        [Export("setBoundsSizeForiPad:")]
        void SetBoundsSizeForiPad(CGSize size);

        // +(void)setShouldShareSynchronous:(BOOL)shouldShareSynchronous;
        [Static]
        [Export("setShouldShareSynchronous:")]
        void SetShouldShareSynchronous(bool shouldShareSynchronous);

        // +(void)setShouldCommentWithShare:(BOOL)shouldCommentWithShare;
        [Static]
        [Export("setShouldCommentWithShare:")]
        void SetShouldCommentWithShare(bool shouldCommentWithShare);

        // +(void)setShouldCommentWithLocation:(BOOL)shouldCommentWithLocation;
        [Static]
        [Export("setShouldCommentWithLocation:")]
        void SetShouldCommentWithLocation(bool shouldCommentWithLocation);

        // +(void)showNotInstallPlatforms:(NSArray *)showPlatforms;
        [Static]
        [Export("showNotInstallPlatforms:")]

        void ShowNotInstallPlatforms(NSObject[] showPlatforms);

        // +(void)hiddenNotInstallPlatforms:(NSArray *)hiddenPlatforms;
        [Static]
        [Export("hiddenNotInstallPlatforms:")]

        void HiddenNotInstallPlatforms(NSObject[] hiddenPlatforms);

        // +(UMSocialConfig *)shareInstance;
        [Static]
        [Export("shareInstance")]

        UMSocialConfig ShareInstance { get; }
    }

    [BaseType(typeof(NSObject))]
    interface UMSocialWechatHandler
    {
        // +(void)setWXAppId:(NSString *)app_Id appSecret:(NSString *)appSecret url:(NSString *)url;
        [Static]
        [Export("setWXAppId:appSecret:url:")]
        void SetWXAppId(string app_Id, string appSecret, string url);
    }

    // @protocol WXApiDelegate <NSObject>
    [Protocol, Model]
    [BaseType(typeof(NSObject))]
    interface WXApiDelegate
    {
        // @optional -(void)onReq:(BaseReq *)req;
        [Export("onReq:")]
        void OnReq(BaseReq req);

        // @optional -(void)onResp:(BaseResp *)resp;
        [Export("onResp:")]
        void OnResp(BaseResp resp);
    }

    // @interface WXApi : NSObject
    [BaseType(typeof(NSObject))]
    interface WXApi
    {
        // +(BOOL)registerApp:(NSString *)appid;
        [Static]
        [Export("registerApp:")]
        bool RegisterApp(string appid);

        // +(BOOL)registerApp:(NSString *)appid withDescription:(NSString *)appdesc;
        [Static]
        [Export("registerApp:withDescription:")]
        bool RegisterApp(string appid, string appdesc);

        // +(BOOL)handleOpenURL:(NSURL *)url delegate:(id<WXApiDelegate>)delegate;
        [Static]
        [Export("handleOpenURL:delegate:")]
        bool HandleOpenURL(NSUrl url, WXApiDelegate @del);

        // +(BOOL)isWXAppInstalled;
        [Static]
        [Export("isWXAppInstalled")]

        bool IsWXAppInstalled { get; }

        // +(BOOL)isWXAppSupportApi;
        [Static]
        [Export("isWXAppSupportApi")]

        bool IsWXAppSupportApi { get; }

        // +(NSString *)getWXAppInstallUrl;
        [Static]
        [Export("getWXAppInstallUrl")]

        string WXAppInstallUrl { get; }

        // +(NSString *)getApiVersion;
        [Static]
        [Export("getApiVersion")]

        string ApiVersion { get; }

        // +(BOOL)openWXApp;
        [Static]
        [Export("openWXApp")]

        bool OpenWXApp { get; }

        // +(BOOL)sendReq:(BaseReq *)req;
        [Static]
        [Export("sendReq:")]
        bool SendReq(BaseReq req);

        // +(BOOL)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController *)viewController delegate:(id<WXApiDelegate>)delegate;
        [Static]
        [Export("sendAuthReq:viewController:delegate:")]
        bool SendAuthReq(SendAuthReq req, UIViewController viewController, WXApiDelegate @del);

        // +(BOOL)sendResp:(BaseResp *)resp;
        [Static]
        [Export("sendResp:")]
        bool SendResp(BaseResp resp);
    }


    // @interface BaseReq : NSObject
    [BaseType(typeof(NSObject))]
    interface BaseReq
    {
        // @property (assign, nonatomic) int type;
        [Export("type")]
        int Type { get; set; }

        // @property (retain, nonatomic) NSString * openID;
        [Export("openID", ArgumentSemantic.Retain)]
        string OpenID { get; set; }
    }

    // @interface BaseResp : NSObject
    [BaseType(typeof(NSObject))]
    interface BaseResp
    {
        // @property (assign, nonatomic) int errCode;
        [Export("errCode")]
        int ErrCode { get; set; }

        // @property (retain, nonatomic) NSString * errStr;
        [Export("errStr", ArgumentSemantic.Retain)]
        string ErrStr { get; set; }

        // @property (assign, nonatomic) int type;
        [Export("type")]
        int Type { get; set; }
    }

    // @interface PayReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface PayReq
    {
        // @property (retain, nonatomic) NSString * partnerId;
        [Export("partnerId", ArgumentSemantic.Retain)]
        string PartnerId { get; set; }

        // @property (retain, nonatomic) NSString * prepayId;
        [Export("prepayId", ArgumentSemantic.Retain)]
        string PrepayId { get; set; }

        // @property (retain, nonatomic) NSString * nonceStr;
        [Export("nonceStr", ArgumentSemantic.Retain)]
        string NonceStr { get; set; }

        // @property (assign, nonatomic) UInt32 timeStamp;
        [Export("timeStamp")]
        uint TimeStamp { get; set; }

        // @property (retain, nonatomic) NSString * package;
        [Export("package", ArgumentSemantic.Retain)]
        string Package { get; set; }

        // @property (retain, nonatomic) NSString * sign;
        [Export("sign", ArgumentSemantic.Retain)]
        string Sign { get; set; }
    }

    // @interface PayResp : BaseResp
    [BaseType(typeof(BaseResp))]
    interface PayResp
    {
        // @property (retain, nonatomic) NSString * returnKey;
        [Export("returnKey", ArgumentSemantic.Retain)]
        string ReturnKey { get; set; }
    }

    // @interface SendAuthReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface SendAuthReq
    {
        // @property (retain, nonatomic) NSString * scope;
        [Export("scope", ArgumentSemantic.Retain)]
        string Scope { get; set; }

        // @property (retain, nonatomic) NSString * state;
        [Export("state", ArgumentSemantic.Retain)]
        string State { get; set; }
    }

    // @interface SendAuthResp : BaseResp
    [BaseType(typeof(BaseResp))]
    interface SendAuthResp
    {
        // @property (retain, nonatomic) NSString * code;
        [Export("code", ArgumentSemantic.Retain)]
        string Code { get; set; }

        // @property (retain, nonatomic) NSString * state;
        [Export("state", ArgumentSemantic.Retain)]
        string State { get; set; }

        // @property (retain, nonatomic) NSString * lang;
        [Export("lang", ArgumentSemantic.Retain)]
        string Lang { get; set; }

        // @property (retain, nonatomic) NSString * country;
        [Export("country", ArgumentSemantic.Retain)]
        string Country { get; set; }
    }

    // @interface SendMessageToWXReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface SendMessageToWXReq
    {
        // @property (retain, nonatomic) NSString * text;
        [Export("text", ArgumentSemantic.Retain)]
        string Text { get; set; }

        // @property (retain, nonatomic) WXMediaMessage * message;
        [Export("message", ArgumentSemantic.Retain)]
        WXMediaMessage Message { get; set; }

        // @property (assign, nonatomic) BOOL bText;
        [Export("bText")]
        bool BText { get; set; }

        // @property (assign, nonatomic) int scene;
        [Export("scene")]
        int Scene { get; set; }
    }

    // @interface SendMessageToWXResp : BaseResp
    [BaseType(typeof(BaseResp))]
    interface SendMessageToWXResp
    {
        // @property (retain, nonatomic) NSString * lang;
        [Export("lang", ArgumentSemantic.Retain)]
        string Lang { get; set; }

        // @property (retain, nonatomic) NSString * country;
        [Export("country", ArgumentSemantic.Retain)]
        string Country { get; set; }
    }

    // @interface GetMessageFromWXReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface GetMessageFromWXReq
    {
        // @property (retain, nonatomic) NSString * lang;
        [Export("lang", ArgumentSemantic.Retain)]
        string Lang { get; set; }

        // @property (retain, nonatomic) NSString * country;
        [Export("country", ArgumentSemantic.Retain)]
        string Country { get; set; }
    }

    // @interface GetMessageFromWXResp : BaseResp
    [BaseType(typeof(BaseResp))]
    interface GetMessageFromWXResp
    {
        // @property (retain, nonatomic) NSString * text;
        [Export("text", ArgumentSemantic.Retain)]
        string Text { get; set; }

        // @property (retain, nonatomic) WXMediaMessage * message;
        [Export("message", ArgumentSemantic.Retain)]
        WXMediaMessage Message { get; set; }

        // @property (assign, nonatomic) BOOL bText;
        [Export("bText")]
        bool BText { get; set; }
    }

    // @interface ShowMessageFromWXReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface ShowMessageFromWXReq
    {
        // @property (retain, nonatomic) WXMediaMessage * message;
        [Export("message", ArgumentSemantic.Retain)]
        WXMediaMessage Message { get; set; }

        // @property (retain, nonatomic) NSString * lang;
        [Export("lang", ArgumentSemantic.Retain)]
        string Lang { get; set; }

        // @property (retain, nonatomic) NSString * country;
        [Export("country", ArgumentSemantic.Retain)]
        string Country { get; set; }
    }

    // @interface ShowMessageFromWXResp : BaseResp
    [BaseType(typeof(BaseResp))]
    interface ShowMessageFromWXResp
    {
    }

    // @interface LaunchFromWXReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface LaunchFromWXReq
    {
        // @property (retain, nonatomic) WXMediaMessage * message;
        [Export("message", ArgumentSemantic.Retain)]
        WXMediaMessage Message { get; set; }

        // @property (retain, nonatomic) NSString * lang;
        [Export("lang", ArgumentSemantic.Retain)]
        string Lang { get; set; }

        // @property (retain, nonatomic) NSString * country;
        [Export("country", ArgumentSemantic.Retain)]
        string Country { get; set; }
    }

    // @interface JumpToBizProfileReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface JumpToBizProfileReq
    {
        // @property (retain, nonatomic) NSString * username;
        [Export("username", ArgumentSemantic.Retain)]
        string Username { get; set; }

        // @property (retain, nonatomic) NSString * extMsg;
        [Export("extMsg", ArgumentSemantic.Retain)]
        string ExtMsg { get; set; }

        // @property (assign, nonatomic) int profileType;
        [Export("profileType")]
        int ProfileType { get; set; }
    }

    // @interface JumpToBizWebviewReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface JumpToBizWebviewReq
    {
        // @property (assign, nonatomic) int webType;
        [Export("webType")]
        int WebType { get; set; }

        // @property (retain, nonatomic) NSString * tousrname;
        [Export("tousrname", ArgumentSemantic.Retain)]
        string Tousrname { get; set; }

        // @property (retain, nonatomic) NSString * extMsg;
        [Export("extMsg", ArgumentSemantic.Retain)]
        string ExtMsg { get; set; }
    }

    // @interface WXCardItem : NSObject
    [BaseType(typeof(NSObject))]
    interface WXCardItem
    {
        // @property (retain, nonatomic) NSString * cardId;
        [Export("cardId", ArgumentSemantic.Retain)]
        string CardId { get; set; }

        // @property (retain, nonatomic) NSString * extMsg;
        [Export("extMsg", ArgumentSemantic.Retain)]
        string ExtMsg { get; set; }

        // @property (assign, nonatomic) UInt32 cardState;
        [Export("cardState")]
        uint CardState { get; set; }
    }

    // @interface AddCardToWXCardPackageReq : BaseReq
    [BaseType(typeof(BaseReq))]
    interface AddCardToWXCardPackageReq
    {
        // @property (retain, nonatomic) NSArray * cardAry;
        [Export("cardAry", ArgumentSemantic.Retain)]

        NSObject[] CardAry { get; set; }
    }

    // @interface AddCardToWXCardPackageResp : BaseResp
    [BaseType(typeof(BaseResp))]
    interface AddCardToWXCardPackageResp
    {
        // @property (retain, nonatomic) NSArray * cardAry;
        [Export("cardAry", ArgumentSemantic.Retain)]

        NSObject[] CardAry { get; set; }
    }

    // @interface WXMediaMessage : NSObject
    [BaseType(typeof(NSObject))]
    interface WXMediaMessage
    {
        // +(WXMediaMessage *)message;
        [Static]
        [Export("message")]

        WXMediaMessage Message { get; }

        // @property (retain, nonatomic) NSString * title;
        [Export("title", ArgumentSemantic.Retain)]
        string Title { get; set; }

        // @property (retain, nonatomic) NSString * description;
        [Export("description", ArgumentSemantic.Retain)]
        string Description { get; set; }

        // @property (retain, nonatomic) NSData * thumbData;
        [Export("thumbData", ArgumentSemantic.Retain)]
        NSData ThumbData { get; set; }

        // @property (retain, nonatomic) NSString * mediaTagName;
        [Export("mediaTagName", ArgumentSemantic.Retain)]
        string MediaTagName { get; set; }

        // @property (retain, nonatomic) NSString * messageExt;
        [Export("messageExt", ArgumentSemantic.Retain)]
        string MessageExt { get; set; }

        // @property (retain, nonatomic) NSString * messageAction;
        [Export("messageAction", ArgumentSemantic.Retain)]
        string MessageAction { get; set; }

        // @property (retain, nonatomic) id mediaObject;
        [Export("mediaObject", ArgumentSemantic.Retain)]
        NSObject MediaObject { get; set; }

        // -(void)setThumbImage:(UIImage *)image;
        [Export("setThumbImage:")]
        void SetThumbImage(UIImage image);
    }

    // @interface WXImageObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXImageObject
    {
        // +(WXImageObject *)object;
        [Static]
        [Export("object")]

        WXImageObject Object { get; }

        // @property (retain, nonatomic) NSData * imageData;
        [Export("imageData", ArgumentSemantic.Retain)]
        NSData ImageData { get; set; }

        // @property (retain, nonatomic) NSString * imageUrl;
        [Export("imageUrl", ArgumentSemantic.Retain)]
        string ImageUrl { get; set; }
    }

    // @interface WXMusicObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXMusicObject
    {
        // +(WXMusicObject *)object;
        [Static]
        [Export("object")]

        WXMusicObject Object { get; }

        // @property (retain, nonatomic) NSString * musicUrl;
        [Export("musicUrl", ArgumentSemantic.Retain)]
        string MusicUrl { get; set; }

        // @property (retain, nonatomic) NSString * musicLowBandUrl;
        [Export("musicLowBandUrl", ArgumentSemantic.Retain)]
        string MusicLowBandUrl { get; set; }

        // @property (retain, nonatomic) NSString * musicDataUrl;
        [Export("musicDataUrl", ArgumentSemantic.Retain)]
        string MusicDataUrl { get; set; }

        // @property (retain, nonatomic) NSString * musicLowBandDataUrl;
        [Export("musicLowBandDataUrl", ArgumentSemantic.Retain)]
        string MusicLowBandDataUrl { get; set; }
    }

    // @interface WXVideoObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXVideoObject
    {
        // +(WXVideoObject *)object;
        [Static]
        [Export("object")]

        WXVideoObject Object { get; }

        // @property (retain, nonatomic) NSString * videoUrl;
        [Export("videoUrl", ArgumentSemantic.Retain)]
        string VideoUrl { get; set; }

        // @property (retain, nonatomic) NSString * videoLowBandUrl;
        [Export("videoLowBandUrl", ArgumentSemantic.Retain)]
        string VideoLowBandUrl { get; set; }
    }

    // @interface WXWebpageObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXWebpageObject
    {
        // +(WXWebpageObject *)object;
        [Static]
        [Export("object")]

        WXWebpageObject Object { get; }

        // @property (retain, nonatomic) NSString * webpageUrl;
        [Export("webpageUrl", ArgumentSemantic.Retain)]
        string WebpageUrl { get; set; }
    }

    // @interface WXAppExtendObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXAppExtendObject
    {
        // +(WXAppExtendObject *)object;
        [Static]
        [Export("object")]

        WXAppExtendObject Object { get; }

        // @property (retain, nonatomic) NSString * url;
        [Export("url", ArgumentSemantic.Retain)]
        string Url { get; set; }

        // @property (retain, nonatomic) NSString * extInfo;
        [Export("extInfo", ArgumentSemantic.Retain)]
        string ExtInfo { get; set; }

        // @property (retain, nonatomic) NSData * fileData;
        [Export("fileData", ArgumentSemantic.Retain)]
        NSData FileData { get; set; }
    }

    // @interface WXEmoticonObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXEmoticonObject
    {
        // +(WXEmoticonObject *)object;
        [Static]
        [Export("object")]

        WXEmoticonObject Object { get; }

        // @property (retain, nonatomic) NSData * emoticonData;
        [Export("emoticonData", ArgumentSemantic.Retain)]
        NSData EmoticonData { get; set; }
    }

    // @interface WXFileObject : NSObject
    [BaseType(typeof(NSObject))]
    interface WXFileObject
    {
        // +(WXFileObject *)object;
        [Static]
        [Export("object")]

        WXFileObject Object { get; }

        // @property (retain, nonatomic) NSString * fileExtension;
        [Export("fileExtension", ArgumentSemantic.Retain)]
        string FileExtension { get; set; }

        // @property (retain, nonatomic) NSData * fileData;
        [Export("fileData", ArgumentSemantic.Retain)]
        NSData FileData { get; set; }
    }


    partial interface Constants
    {
        // extern NSString *const PARAM_USER_DATA;
        [Field("PARAM_USER_DATA")]
        NSString PARAM_USER_DATA { get; }

        // extern NSString *const PARAM_APP_ICON;
        [Field("PARAM_APP_ICON")]
        NSString PARAM_APP_ICON { get; }

        // extern NSString *const PARAM_APP_DESC;
        [Field("PARAM_APP_DESC")]
        NSString PARAM_APP_DESC { get; }

        // extern NSString *const PARAM_APP_INVITED_OPENIDS;
        [Field("PARAM_APP_INVITED_OPENIDS")]
        NSString PARAM_APP_INVITED_OPENIDS { get; }

        // extern NSString *const PARAM_SENDSTORY_RECEIVER;
        [Field("PARAM_SENDSTORY_RECEIVER")]
        NSString PARAM_SENDSTORY_RECEIVER { get; }

        // extern NSString *const PARAM_SENDSTORY_TITLE;
        [Field("PARAM_SENDSTORY_TITLE")]
        NSString PARAM_SENDSTORY_TITLE { get; }

        // extern NSString *const PARAM_SENDSTORY_COMMENT;
        [Field("PARAM_SENDSTORY_COMMENT")]
        NSString PARAM_SENDSTORY_COMMENT { get; }

        // extern NSString *const PARAM_SENDSTORY_SUMMARY;
        [Field("PARAM_SENDSTORY_SUMMARY")]
        NSString PARAM_SENDSTORY_SUMMARY { get; }

        // extern NSString *const PARAM_SENDSTORY_IMAGE;
        [Field("PARAM_SENDSTORY_IMAGE")]
        NSString PARAM_SENDSTORY_IMAGE { get; }

        // extern NSString *const PARAM_SENDSTORY_URL;
        [Field("PARAM_SENDSTORY_URL")]
        NSString PARAM_SENDSTORY_URL { get; }

        // extern NSString *const PARAM_SENDSTORY_ACT;
        [Field("PARAM_SENDSTORY_ACT")]
        NSString PARAM_SENDSTORY_ACT { get; }

        // extern NSString *const PARAM_SETUSERHEAD_PIC;
        [Field("PARAM_SETUSERHEAD_PIC")]
        NSString PARAM_SETUSERHEAD_PIC { get; }

        // extern NSString *const PARAM_SETUSERHEAD_FILENAME;
        [Field("PARAM_SETUSERHEAD_FILENAME")]
        NSString PARAM_SETUSERHEAD_FILENAME { get; }

        // extern NSString *const PARAM_RETCODE;
        [Field("PARAM_RETCODE")]
        NSString PARAM_RETCODE { get; }

        // extern NSString *const PARAM_MESSAGE;
        [Field("PARAM_MESSAGE")]
        NSString PARAM_MESSAGE { get; }

        // extern NSString *const PARAM_DATA;
        [Field("PARAM_DATA")]
        NSString PARAM_DATA { get; }

        // extern NSString *const TCOpenSDKErrorKeyExtraInfo;
        [Field("TCOpenSDKErrorKeyExtraInfo")]
        NSString TCOpenSDKErrorKeyExtraInfo { get; }

        // extern NSString *const TCOpenSDKErrorKeyRetCode;
        [Field("TCOpenSDKErrorKeyRetCode")]
        NSString TCOpenSDKErrorKeyRetCode { get; }

        // extern NSString *const TCOpenSDKErrorKeyMsg;
        [Field("TCOpenSDKErrorKeyMsg")]
        NSString TCOpenSDKErrorKeyMsg { get; }

        // extern NSString *const TCOpenSDKErrorMsgUnsupportedAPI;
        [Field("TCOpenSDKErrorMsgUnsupportedAPI")]
        NSString TCOpenSDKErrorMsgUnsupportedAPI { get; }

        // extern NSString *const TCOpenSDKErrorMsgSuccess;
        [Field("TCOpenSDKErrorMsgSuccess")]
        NSString TCOpenSDKErrorMsgSuccess { get; }

        // extern NSString *const TCOpenSDKErrorMsgUnknown;
        [Field("TCOpenSDKErrorMsgUnknown")]
        NSString TCOpenSDKErrorMsgUnknown { get; }

        // extern NSString *const TCOpenSDKErrorMsgUserCancel;
        [Field("TCOpenSDKErrorMsgUserCancel")]
        NSString TCOpenSDKErrorMsgUserCancel { get; }

        // extern NSString *const TCOpenSDKErrorMsgReLogin;
        [Field("TCOpenSDKErrorMsgReLogin")]
        NSString TCOpenSDKErrorMsgReLogin { get; }

        // extern NSString *const TCOpenSDKErrorMsgOperationDeny;
        [Field("TCOpenSDKErrorMsgOperationDeny")]
        NSString TCOpenSDKErrorMsgOperationDeny { get; }

        // extern NSString *const TCOpenSDKErrorMsgNetwork;
        [Field("TCOpenSDKErrorMsgNetwork")]
        NSString TCOpenSDKErrorMsgNetwork { get; }

        // extern NSString *const TCOpenSDKErrorMsgURL;
        [Field("TCOpenSDKErrorMsgURL")]
        NSString TCOpenSDKErrorMsgURL { get; }

        // extern NSString *const TCOpenSDKErrorMsgDataParse;
        [Field("TCOpenSDKErrorMsgDataParse")]
        NSString TCOpenSDKErrorMsgDataParse { get; }

        // extern NSString *const TCOpenSDKErrorMsgParam;
        [Field("TCOpenSDKErrorMsgParam")]
        NSString TCOpenSDKErrorMsgParam { get; }

        // extern NSString *const TCOpenSDKErrorMsgTimeout;
        [Field("TCOpenSDKErrorMsgTimeout")]
        NSString TCOpenSDKErrorMsgTimeout { get; }

        // extern NSString *const TCOpenSDKErrorMsgSecurity;
        [Field("TCOpenSDKErrorMsgSecurity")]
        NSString TCOpenSDKErrorMsgSecurity { get; }

        // extern NSString *const TCOpenSDKErrorMsgIO;
        [Field("TCOpenSDKErrorMsgIO")]
        NSString TCOpenSDKErrorMsgIO { get; }

        // extern NSString *const TCOpenSDKErrorMsgServer;
        [Field("TCOpenSDKErrorMsgServer")]
        NSString TCOpenSDKErrorMsgServer { get; }

        // extern NSString *const TCOpenSDKErrorMsgWebPage;
        [Field("TCOpenSDKErrorMsgWebPage")]
        NSString TCOpenSDKErrorMsgWebPage { get; }

        // extern NSString *const TCOpenSDKErrorMsgUserHeadPicLarge;
        [Field("TCOpenSDKErrorMsgUserHeadPicLarge")]
        NSString TCOpenSDKErrorMsgUserHeadPicLarge { get; }
    }


    partial interface Constants
    {
        // extern NSString *const kOPEN_PERMISSION_ADD_TOPIC;
        [Field("kOPEN_PERMISSION_ADD_TOPIC")]
        NSString kOPEN_PERMISSION_ADD_TOPIC { get; }

        // extern NSString *const kOPEN_PERMISSION_ADD_ONE_BLOG;
        [Field("kOPEN_PERMISSION_ADD_ONE_BLOG")]
        NSString kOPEN_PERMISSION_ADD_ONE_BLOG { get; }

        // extern NSString *const kOPEN_PERMISSION_ADD_ALBUM;
        [Field("kOPEN_PERMISSION_ADD_ALBUM")]
        NSString kOPEN_PERMISSION_ADD_ALBUM { get; }

        // extern NSString *const kOPEN_PERMISSION_UPLOAD_PIC;
        [Field("kOPEN_PERMISSION_UPLOAD_PIC")]
        NSString kOPEN_PERMISSION_UPLOAD_PIC { get; }

        // extern NSString *const kOPEN_PERMISSION_LIST_ALBUM;
        [Field("kOPEN_PERMISSION_LIST_ALBUM")]
        NSString kOPEN_PERMISSION_LIST_ALBUM { get; }

        // extern NSString *const kOPEN_PERMISSION_ADD_SHARE;
        [Field("kOPEN_PERMISSION_ADD_SHARE")]
        NSString kOPEN_PERMISSION_ADD_SHARE { get; }

        // extern NSString *const kOPEN_PERMISSION_CHECK_PAGE_FANS;
        [Field("kOPEN_PERMISSION_CHECK_PAGE_FANS")]
        NSString kOPEN_PERMISSION_CHECK_PAGE_FANS { get; }

        // extern NSString *const kOPEN_PERMISSION_ADD_PIC_T;
        [Field("kOPEN_PERMISSION_ADD_PIC_T")]
        NSString kOPEN_PERMISSION_ADD_PIC_T { get; }

        // extern NSString *const kOPEN_PERMISSION_DEL_T;
        [Field("kOPEN_PERMISSION_DEL_T")]
        NSString kOPEN_PERMISSION_DEL_T { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_REPOST_LIST;
        [Field("kOPEN_PERMISSION_GET_REPOST_LIST")]
        NSString kOPEN_PERMISSION_GET_REPOST_LIST { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_INFO;
        [Field("kOPEN_PERMISSION_GET_INFO")]
        NSString kOPEN_PERMISSION_GET_INFO { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_OTHER_INFO;
        [Field("kOPEN_PERMISSION_GET_OTHER_INFO")]
        NSString kOPEN_PERMISSION_GET_OTHER_INFO { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_FANSLIST;
        [Field("kOPEN_PERMISSION_GET_FANSLIST")]
        NSString kOPEN_PERMISSION_GET_FANSLIST { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_IDOLLIST;
        [Field("kOPEN_PERMISSION_GET_IDOLLIST")]
        NSString kOPEN_PERMISSION_GET_IDOLLIST { get; }

        // extern NSString *const kOPEN_PERMISSION_ADD_IDOL;
        [Field("kOPEN_PERMISSION_ADD_IDOL")]
        NSString kOPEN_PERMISSION_ADD_IDOL { get; }

        // extern NSString *const kOPEN_PERMISSION_DEL_IDOL;
        [Field("kOPEN_PERMISSION_DEL_IDOL")]
        NSString kOPEN_PERMISSION_DEL_IDOL { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO;
        [Field("kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO")]
        NSString kOPEN_PERMISSION_GET_INTIMATE_FRIENDS_WEIBO { get; }

        // extern NSString *const kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO;
        [Field("kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO")]
        NSString kOPEN_PERMISSION_MATCH_NICK_TIPS_WEIBO { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_VIP_INFO;
        [Field("kOPEN_PERMISSION_GET_VIP_INFO")]
        NSString kOPEN_PERMISSION_GET_VIP_INFO { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_VIP_RICH_INFO;
        [Field("kOPEN_PERMISSION_GET_VIP_RICH_INFO")]
        NSString kOPEN_PERMISSION_GET_VIP_RICH_INFO { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_USER_INFO;
        [Field("kOPEN_PERMISSION_GET_USER_INFO")]
        NSString kOPEN_PERMISSION_GET_USER_INFO { get; }

        // extern NSString *const kOPEN_PERMISSION_GET_SIMPLE_USER_INFO;
        [Field("kOPEN_PERMISSION_GET_SIMPLE_USER_INFO")]
        NSString kOPEN_PERMISSION_GET_SIMPLE_USER_INFO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_UPLOAD_PIC;
        [Field("kOPEN_PERMISSION_WEIYUN_UPLOAD_PIC")]
        NSString kOPEN_PERMISSION_WEIYUN_UPLOAD_PIC { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DOWNLOAD_PIC;
        [Field("kOPEN_PERMISSION_WEIYUN_DOWNLOAD_PIC")]
        NSString kOPEN_PERMISSION_WEIYUN_DOWNLOAD_PIC { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_PIC_LIST;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_PIC_LIST")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_PIC_LIST { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DELETE_PIC;
        [Field("kOPEN_PERMISSION_WEIYUN_DELETE_PIC")]
        NSString kOPEN_PERMISSION_WEIYUN_DELETE_PIC { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_PIC_THUMB;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_PIC_THUMB")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_PIC_THUMB { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_UPLOAD_MUSIC;
        [Field("kOPEN_PERMISSION_WEIYUN_UPLOAD_MUSIC")]
        NSString kOPEN_PERMISSION_WEIYUN_UPLOAD_MUSIC { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DOWNLOAD_MUSIC;
        [Field("kOPEN_PERMISSION_WEIYUN_DOWNLOAD_MUSIC")]
        NSString kOPEN_PERMISSION_WEIYUN_DOWNLOAD_MUSIC { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_MUSIC_LIST;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_MUSIC_LIST")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_MUSIC_LIST { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DELETE_MUSIC;
        [Field("kOPEN_PERMISSION_WEIYUN_DELETE_MUSIC")]
        NSString kOPEN_PERMISSION_WEIYUN_DELETE_MUSIC { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_UPLOAD_VIDEO;
        [Field("kOPEN_PERMISSION_WEIYUN_UPLOAD_VIDEO")]
        NSString kOPEN_PERMISSION_WEIYUN_UPLOAD_VIDEO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DOWNLOAD_VIDEO;
        [Field("kOPEN_PERMISSION_WEIYUN_DOWNLOAD_VIDEO")]
        NSString kOPEN_PERMISSION_WEIYUN_DOWNLOAD_VIDEO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_VIDEO_LIST;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_VIDEO_LIST")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_VIDEO_LIST { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DELETE_VIDEO;
        [Field("kOPEN_PERMISSION_WEIYUN_DELETE_VIDEO")]
        NSString kOPEN_PERMISSION_WEIYUN_DELETE_VIDEO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_UPLOAD_PHOTO;
        [Field("kOPEN_PERMISSION_WEIYUN_UPLOAD_PHOTO")]
        NSString kOPEN_PERMISSION_WEIYUN_UPLOAD_PHOTO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DOWNLOAD_PHOTO;
        [Field("kOPEN_PERMISSION_WEIYUN_DOWNLOAD_PHOTO")]
        NSString kOPEN_PERMISSION_WEIYUN_DOWNLOAD_PHOTO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_PHOTO_LIST;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_PHOTO_LIST")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_PHOTO_LIST { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DELETE_PHOTO;
        [Field("kOPEN_PERMISSION_WEIYUN_DELETE_PHOTO")]
        NSString kOPEN_PERMISSION_WEIYUN_DELETE_PHOTO { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_PHOTO_THUMB;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_PHOTO_THUMB")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_PHOTO_THUMB { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_CHECK_RECORD;
        [Field("kOPEN_PERMISSION_WEIYUN_CHECK_RECORD")]
        NSString kOPEN_PERMISSION_WEIYUN_CHECK_RECORD { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_CREATE_RECORD;
        [Field("kOPEN_PERMISSION_WEIYUN_CREATE_RECORD")]
        NSString kOPEN_PERMISSION_WEIYUN_CREATE_RECORD { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_DELETE_RECORD;
        [Field("kOPEN_PERMISSION_WEIYUN_DELETE_RECORD")]
        NSString kOPEN_PERMISSION_WEIYUN_DELETE_RECORD { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_GET_RECORD;
        [Field("kOPEN_PERMISSION_WEIYUN_GET_RECORD")]
        NSString kOPEN_PERMISSION_WEIYUN_GET_RECORD { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_MODIFY_RECORD;
        [Field("kOPEN_PERMISSION_WEIYUN_MODIFY_RECORD")]
        NSString kOPEN_PERMISSION_WEIYUN_MODIFY_RECORD { get; }

        // extern NSString *const kOPEN_PERMISSION_WEIYUN_QUERY_ALL_RECORD;
        [Field("kOPEN_PERMISSION_WEIYUN_QUERY_ALL_RECORD")]
        NSString kOPEN_PERMISSION_WEIYUN_QUERY_ALL_RECORD { get; }
    }

    // @interface UMSocialQQHandler : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialQQHandler
    {
        // +(void)setQQWithAppId:(NSString *)appId appKey:(NSString *)appKey url:(NSString *)url;
        [Static]
        [Export("setQQWithAppId:appKey:url:")]
        void SetQQWithAppId(string appId, string appKey, string url);

        // +(void)setSupportWebView:(BOOL)supportWebView;
        [Static]
        [Export("setSupportWebView:")]
        void SetSupportWebView(bool supportWebView);
    }

    // @interface UMSocialScreenShoter : NSObject
    [BaseType(typeof(NSObject))]
    interface UMSocialScreenShoter
    {
        // +(UMSocialScreenShoter *)screenShoter;
        [Static]
        [Export("screenShoter")]
        UMSocialScreenShoter ScreenShoter { get; }

        // -(UIImage *)getScreenShot;
        [Export("getScreenShot")]
        UIImage ScreenShot { get; }
    }

    // @interface UMSocialScreenShoterDefault : UMSocialScreenShoter
    [BaseType(typeof(UMSocialScreenShoter))]
    interface UMSocialScreenShoterDefault
    {
    }

    // @interface UMSocialScreenShoterMediaPlayer : UMSocialScreenShoter
    [BaseType(typeof(UMSocialScreenShoter))]
    interface UMSocialScreenShoterMediaPlayer
    {
        // +(UMSocialScreenShoter *)screenShoterFromMoviePlayer:(MPMoviePlayerController *)player;
        [Static]
        [Export("screenShoterFromMoviePlayer:")]
        UMSocialScreenShoter ScreenShoterFromMoviePlayer(MPMoviePlayerController player);
    }

    // @interface UMSocialScreenShoterCocos2d : UMSocialScreenShoter
    [BaseType(typeof(UMSocialScreenShoter))]
    interface UMSocialScreenShoterCocos2d
    {
        // +(UMSocialScreenShoter *)screenShoterFromEaglView:(UIView *)eaglview;
        [Static]
        [Export("screenShoterFromEaglView:")]
        UMSocialScreenShoter ScreenShoterFromEaglView(UIView eaglview);
    }

}

